package com.amway.qy.core.callback;

import java.util.Map;

import com.amway.qy.message.req.ReqAgentEntryEventMessage;
import com.amway.qy.message.req.ReqImageMessage;
import com.amway.qy.message.req.ReqLinkMessage;
import com.amway.qy.message.req.ReqLocationMessage;
import com.amway.qy.message.req.ReqMenuClickEventMessage;
import com.amway.qy.message.req.ReqMenuViewEventMessage;
import com.amway.qy.message.req.ReqShortVideo;
import com.amway.qy.message.req.ReqSubscribeEventMessage;
import com.amway.qy.message.req.ReqTextMessage;
import com.amway.qy.message.req.ReqUnSubscribeEventMessage;
import com.amway.qy.message.req.ReqVideoMessage;
import com.amway.qy.message.req.ReqVoiceMessage;

/*
 * @link{com.amway.qy.util.common.XmlUtils}, provide a lot of short cut to change your response in XML.
 * 
 */

public interface QyWechatCallBackHandler {
	
	/*
	 * 这个接口是一个高层接口，当所有的信息类型不符合的时候 ，就统一转到该接口中。
	 */
	String handle(Map<String,String> data);
	
	
	/*
	 * 以下所有的接口，都是对应于特定的消息或者类型做处理。
	 */
	String handleTextRequest(ReqTextMessage text);
	
	String handleImageRequest(ReqImageMessage image);
	
	String handleVoiceRequest(ReqVoiceMessage voice);
	
	String handleVideoRequest(ReqVideoMessage video);
	
	String handleShortVideoRequest(ReqShortVideo short_video);
	
	String handleLocationRequest(ReqLocationMessage location);
		
	String handleLinkRequest(ReqLinkMessage link);
	
	String handleSubscribeEventRequest(ReqSubscribeEventMessage subscribeEvent);
	
	String handleUnSubscribeEventRequest(ReqUnSubscribeEventMessage unsubscribeEvent);
	
	String handleMenuClickEventRequest(ReqMenuClickEventMessage clickEvent);
	
	String handleMenuViewEventRequest(ReqMenuViewEventMessage viewEvent);
	
	String handleEnterAgentEventRequest(ReqAgentEntryEventMessage enterEvent);
	
}
